/*
 * Paintroid: An image manipulation application for Android.
 *  Copyright (C) 2010-2022 The Catrobat Team
 * (<http://developer.catrobat.org/credits>)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.catrobat.paintroid.ui

import android.util.DisplayMetrics
import android.util.TypedValue
import android.view.View

private const val HEIGHT_THRESHOLD = 300f

class KeyboardListener(activityRootView: View) {
    var isSoftKeyboardVisible = false

    init {
        activityRootView.viewTreeObserver.addOnGlobalLayoutListener {
            val heightDifference = activityRootView.rootView.height - activityRootView.height
            val displayMetrics = activityRootView.resources.displayMetrics
            isSoftKeyboardVisible = heightDifference > dpToPx(displayMetrics)
        }
    }

    private fun dpToPx(displayMetrics: DisplayMetrics, dpValue: Float = HEIGHT_THRESHOLD): Float =
        TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP,
            dpValue,
            displayMetrics
        )
}
